package pe.org.cnl.congreso.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import pe.org.cnl.congreso.dao.AcompananteDAO;
import pe.org.cnl.congreso.dao.AlojamientoDAO;
import pe.org.cnl.congreso.dao.ParticipanteDAO;
import pe.org.cnl.congreso.dao.TarjetasDAO;
import pe.org.cnl.congreso.dao.TourDAO;
import pe.org.cnl.congreso.dao.TransferenciaDAO;
import pe.org.cnl.congreso.dao.VueloDAO;
import pe.org.cnl.congreso.model.Estatuspago;
import pe.org.cnl.congreso.model.Pai;
import pe.org.cnl.congreso.model.Participante;
import pe.org.cnl.congreso.model.Transferenciabancaria;
import pe.org.cnl.congreso.service.ParticipanteService;

@Service
public class ParticipanteServiceImpl implements ParticipanteService {

	@Autowired
	private ParticipanteDAO participanteDAO;
	@Autowired
	private AcompananteDAO acompananteDAO;
	@Autowired
	private TarjetasDAO tarjetasDAO;
	@Autowired
	private TransferenciaDAO transferenciaDAO;
	@Autowired
	private VueloDAO vueloDAO;
	@Autowired
	private TourDAO tourDAO;
	@Autowired
	private AlojamientoDAO alojamientoDAO;
	
	@Override
	public void registrarParticipante(Participante participante) {
		participanteDAO.registrarParticipante(participante);
		
		Transferenciabancaria tr = new Transferenciabancaria();
		tr.setBanco(participante.getBanco() );
		tr.setIdtransferenciaBancaria( participante.getIdtransferenciaBancaria() );
		tr.setIdParticipante( participante.getIdParticipante());
		tr.setFechaDeTransferencia( participante.getFechaDeTransferencia());		
		transferenciaDAO.modificarTransferencia( tr );
	}

	@Override
	public int registrarParticipantes(List<Participante> participantes) {
		int res = participanteDAO.registrarParticipantes(participantes);
		participanteDAO.updateDatos();
		return res;
	}

	@Override
	public List<Participante> listarParticipantes(Participante participante) {
		return participanteDAO.listarParticipantes(participante);
	}

	@Override
	public List<Participante> listarParticipantesCompleto(Participante participante) {
		List<Participante> lista = participanteDAO.listarParticipantes(participante);
		for( Participante p : lista){
			p.setAcompanantes( acompananteDAO.listarAcompanantes( p.getIdParticipante() ) );
		}
		return lista;
	}

	@Override
	public Participante obtenerParticipantes(Integer idParticipante) {
		return participanteDAO.obtenerParticipantes(idParticipante);
	}

	@Override
	public Participante obtenerParticipanteCompleto(Integer idParticipante) {
		Participante p =  participanteDAO.obtenerParticipantes(idParticipante);
		p.setAcompanantes( acompananteDAO.listarAcompanantes( p.getIdParticipante() ));
		p.setAlojamientos( alojamientoDAO.listarAlojamientos( p.getIdParticipante() ) ); 
		p.setTarjetadecreditos( tarjetasDAO.listarTarjetas(p.getIdParticipante() ) );
		p.setTours( tourDAO.listarTours( p.getIdParticipante() ) );
		p.setTransferenciabancarias( transferenciaDAO.listarTransferencias(p.getIdParticipante()) );
		p.setVuelos( vueloDAO.listarVuelos( p.getIdParticipante() ));		
		return p;
	}
	
	@Override
	public List<Pai> listarPaises() {
		return participanteDAO.listarPaises();
	}

	@Override
	public List<Estatuspago> listarEstados() {
		return participanteDAO.listarEstados();
	}


}
